#include<iostream>
#include<cstdarg>
#include<memory>
#include<functional>


using namespace std;

//无参就打印换行
void xprintf()
{
    cout<<endl;
}


template <typename T,typename ...Args> 
void xprintf(const T & t,Args &&...args)
{   
    cout<<t<<" ";
    if((sizeof ...(args))>0) //计算不定参数的大小，
    {
        xprintf(forward<Args>(args)...); //完美转发(forward--右值引用)，转发下一个参数
    }
    else //最后一个是无参的
    {
        xprintf();
    }

}




int main()
{
    xprintf("好好学习");
    xprintf("好好学习",123);
    xprintf("好好学习",123,"加油");

    return 0;
}